package com.shiroha.account.service;

import com.shiroha.account.pojo.dto.PasswordDTO;
import com.shiroha.common.pojo.dto.UserDTO;
import org.keycloak.representations.AccessTokenResponse;

/**
 * 账户服务
 */
public interface IAccountService {

    /**
     * 用户通过用户名 + 密码登录
     * @param username 用户名
     * @param password 密码
     * @return token令牌
     */
    AccessTokenResponse loginByPassword(String username, String password);

    /**
     * 刷新token
     * @param refreshToken refresh_token
     * @return 刷新后的token
     */
    AccessTokenResponse refreshAccessToken(String refreshToken);

    /**
     * 用户登出
     * @param userId 用户ID
     */
    void logout(String userId);

    /**
     * 创建一个新的用户
     * @param user 要创建的用户对象
     * @return 创建成功的用户对象
     */
    UserDTO createUser(UserDTO user);

    /**
     * 根据ID获取用户
     * @param userId 用户Id
     * @return 找到的用户
     */
    UserDTO getUserById(String userId);

    /**
     * 更新用户信息
     * @param userId 用户ID
     * @param user DTO对象
     */
    void updateUser(String userId, UserDTO user);

    /**
     * 更新密码
     * @param userId 用户ID
     * @param passwordDTO DTO对象
     */
    void updatePassword(String userId, PasswordDTO passwordDTO);
}
